package cn.com.sise.utils;

import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;

public class FileUploadUtils {
    MultipartFile multipartFile;
    HttpServletRequest request;

    /**
     * String originalFilename;//上传的原文件名字
     * <p>
     * String sqlPath;//存储在数据库供读取的文件路径(供读取)
     * String dirPath;//上传文件的保存路径(供上传)
     * String newFileName;//上传文件的新文件名
     * <p>
     * String sqlPathFileName;//存储数据库中的文件全路径(供读取)
     * String dirPathFileName;//实际存储的路径(供上传)
     **/

    public FileUploadUtils(MultipartFile multipartFile, HttpServletRequest request) {
        this.multipartFile = multipartFile;
        this.request = request;
    }

    //获取{上传的原文件名字}
    public String getOriginalFilename() {
        return this.multipartFile.getOriginalFilename();
    }

    //获取{存储在数据库供读取的文件路径(供读取) String FolderName : 存放文件的文件夹名}
    public String getSqlPath(String FolderName) {
        return this.request.getContextPath() + "/" + FolderName + "/";
    }

    //获取{上传文件的保存路径(供上传) String FolderName : 存放文件的文件夹名}
    public String getDirPath(String FolderName) {
        return this.request.getSession().getServletContext().getRealPath("/" + FolderName + "/");
    }

    //获取{上传文件的新文件名}
    //文件名默认为：用户名 + "_Personal"
    public String getNewFileName(String FileName) {
        return FileName + getOriginalFilename().substring(getOriginalFilename().lastIndexOf("."));
    }

    //获取{存储数据库中的文件全路径(包括文件名)(供读取)}
    //String FolderName : 上传的文件夹名字 String FileName : 上传的用户的session
    public String getSqlPathFileName(String FolderName, String FileName) {
        return getSqlPath(FolderName) + getNewFileName(FileName);
    }

    //获取{实际存储的全路径(包括文件名)(供上传)}
    //String FolderName : 上传的文件夹名字 String FileName : 上传的用户的session
    public String getDirPathFileName(String FolderName, String FileName) {
        return getDirPath(FolderName) + getNewFileName(FileName);
    }
}
